package com.chinaisafe.user.service;

import com.chinaisafe.user.entity.SysTenant;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaisafe.user.vo.request.SysTenantReqVO;
import com.chinaisafe.user.vo.request.TenantChangeStatusReqVO;
import com.chinaisafe.user.vo.response.LoginTenantTreeVO;
import com.chinaisafe.user.vo.response.LoginTenantVO;
import com.chinaisafe.user.vo.response.SysTenantRespVO;

import java.util.List;

/**
 * SysTenantService
 * Description：租户服务类
 *
 * @author xuefu.shu
 * @date 2024-07-12 10:22:08
 */
public interface SysTenantService extends IService<SysTenant> {
    /**
     * 根据条件获取租户分页列表
     *
     * @param sysTenantReqVO 筛选参数
     * @return Page<SysTenantRespVO> 分页对象
     * @author xuefu.shu
     * @date 2024-07-12 10:22:08
     */
    IPage<SysTenantRespVO> getPageList(SysTenantReqVO sysTenantReqVO);

    /**
     * 新增租户
     *
     * @param sysTenantReqVO 新增参数
     * @return SysTenantRespVO 响应参数
     * @author xuefu.shu
     * @date 2024-07-12 10:22:08
     */
    SysTenantRespVO add(SysTenantReqVO sysTenantReqVO);

    /**
     * 根据id编辑租户
     *
     * @param sysTenantReqVO 修改参数
     * @return SysTenantRespVO 响应参数
     * @author xuefu.shu
     * @date 2024-07-12 10:22:08
     */
    SysTenantRespVO update(SysTenantReqVO sysTenantReqVO);

    /**
     * 新增或修改租户
     *
     * @param sysTenantReqVO 编辑修改参数
     * @return SysTenantRespVO 响应参数
     * @author xuefu.shu
     * @date 2024-07-12 10:22:08
     */
    SysTenantRespVO addOrUpdate(SysTenantReqVO sysTenantReqVO);

    /**
     * 根据id获取租户详情信息
     *
     * @param sysTenantId 数据id
     * @return SysTenantRespVO 响应参数
     * @author xuefu.shu
     * @date 2024-07-12 10:22:08
     */
    SysTenantRespVO getDetailById(Long sysTenantId);

    /**
     * 根据id删除租户
     *
     * @param sysTenantIds id数组
     * @author xuefu.shu
     * @date 2024-07-12 10:22:08
     */
    void deleteByIds(Long[] sysTenantIds);

    /**
     * 获取用户所拥有的租户树
     *
     * @return LoginTenantVO
     * @author xuefu.shu
     * @date 2024-07-15 10:03
     */
    LoginTenantVO tenantUserTree();

    /**
     * 启用/禁用租户
     *
     * @param changeStatusReqVO 启用/禁用租户请求参数
     * @author xuefu.shu
     * @date 2024-07-15 10:03
     */
    void changeStatus(TenantChangeStatusReqVO changeStatusReqVO);
}
